사용자 View에서 사각형 내부 Touch 판단하기 :: 안드로이드 설치 및 개발[SSISO Community]
 
SSISO 카페 SSISO Source SSISO 구직 SSISO 쇼핑몰 SSISO 맛집
추천검색어 : JUnit   Log4j   ajax   spring   struts   struts-config.xml   Synchronized   책정보   Ajax 마스터하기   우측부분

안드로이드 설치 및 개발
[1]
등록일:2018-07-01 17:20:01 (0%)
작성자:
제목:사용자 View에서 사각형 내부 Touch 판단하기
사용자가 만든 View에서 특정한 사각형 영역을 클릭(Touch)했는지를 간편하게 판단하려면 Rect() 오브젝트를 사용한다.

Rect()에는 여기에 유용한 함수가 2개 있다.




intersect()는 2개의 Rect()가 겹쳐저 있는지를 판단하는 함수이며, contains()는 Rect()나 Point가 완전히 포함되어 있는지를 판단하는 함수이다. 화면의 Touch는 Point 형태이므로 contains를 이용하는 것이 간편하다.

이것을 확인하기 위해 다음과 같은 예제를 작성한다.


package com.Test01;

import android.app.*;
import android.content.*;
import android.graphics.*;
import android.os.*;
import android.view.*;
import android.widget.*;

public class Test01 extends Activity {
    
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(new MyView(this));
    }   

    //-----------------------------------
    //       MyView
    //-----------------------------------
    class MyView extends View {
        private Rect rect;   // rect를 전역변수로 선언한다

        //-----------------------------------
        //       Constructor
        //-----------------------------------
        public MyView(Context context) {
             super(context);
         }
  
        //-----------------------------------
        //       실제 그림을 그리는 부분
        //-----------------------------------
        public void onDraw(Canvas canvas) {
              Paint paint = new Paint();    // 새로운 paint 개체를 만들고 
              paint.setColor(Color.GREEN);    // 연두색으로 설정
              rect = new Rect(100, 100, 300, 180); // 사각형 영역을 만든다
              canvas.drawRect(rect, paint);
        } // onDraw 끝
  
        //-----------------------------------
        //      onTouchEvent
        //-----------------------------------
        public boolean onTouchEvent(MotionEvent event) {
              if (event.getAction() == MotionEvent.ACTION_DOWN) {
                  int x = (int) event.getX();
                  int y = (int) event.getY();
    
                  if (rect.contains(x, y) == true)
                          Toast.makeText(Test01.this, "Hit", 0).show();
                  else
                          Toast.makeText(Test01.this, "Miss", 0).show();
              }
              return false;
        }

    } // GameView 끝
   
} // 프로그램 끝
 



         

[본문링크] 사용자 View에서 사각형 내부 Touch 판단하기
[1]
코멘트(이글의 트랙백 주소:/cafe/tb_receive.php?no=34671
작성자
비밀번호

 

SSISOCommunity

[이전]

Copyright byCopyright ⓒ2005, SSISO Community All Rights Reserved.